import { NextResponse } from "next/server"; import { verifyToken } from "@/lib/auth"; import smbClient from "@/lib/smbClient"; export async function GET(request, { params }) { const headers = new Headers(); headers.set("Cache-Control", "no-store"); const decoded = verifyToken(request); if (decoded.error) { return NextResponse.json( { error: decoded.error }, { status: 401, headers } ); } const { path: pathArray = [] } = params; const niederlassungId = pathArray.shift(); if (decoded.role !== "admin" && decoded.niederlassungId !== niederlassungId) { console.log(`Keine Berechtigung für diese Niederlassung ${niederlassungId}`); return NextResponse.json( { error: "Keine Berechtigung" }, { status: 403, headers } ); } const smbPath = pathArray.length > 0 ? [niederlassungId, ...pathArray].join("\\") : [niederlassungId].join("\\"); console.log("Versuche, auf folgenden Pfad zuzugreifen:", smbPath); return new Promise((resolve) => { smbClient.readdir(smbPath, (err, files) => { if (err) { console.error("Fehler beim Zugriff auf den Ordner:", err); resolve( NextResponse.json( { error: "Fehler beim Zugriff auf den Ordner", details: err.message, }, { status: 500, headers } ) ); } else if (!files || files.length === 0) { console.log(`Keine Dateien im Pfad ${smbPath} gefunden.`); resolve( NextResponse.json( { message: `Keine Dateien im angegebenen Ordner ${smbPath} gefunden.` }, { status: 200, headers } ) ); } else { const sortedFiles = [...files].sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); resolve(NextResponse.json({ files: sortedFiles }, { status: 200, headers })); } }); }); }